package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import logica.Funcionario;
import persistencia.BancoDeDados;
import sun.applet.Main;

/**
 * CRUD:
 * Create
 * Read
 * Update
 * Delete
 * @author Pablo
 */
public class FuncionarioPesistencia {

    public static void salvarUsuario(Funcionario funcionario){
        BancoDeDados.conecta();        
        try {        
                String slq = "INSERT INTO FUNCIONARIO (nome, matricula, setor, filial) VALUE (?,?,?,?)";
                PreparedStatement pstm = BancoDeDados.getConexao().prepareStatement(slq);
                pstm.setString(1, funcionario.getNome());
                pstm.setInt(2, funcionario.getMatricula());
                pstm.setString(3, funcionario.getSetor());
                pstm.setString(4, funcionario.getFilial());
                pstm.executeUpdate();
                BancoDeDados.desconectar();
        } catch (SQLException ex) {
            Logger.getLogger(FuncionarioPesistencia.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public static void deletarFuncionario(Integer matricula){
        BancoDeDados.conecta();
        try {
            String sql = "DELETE FROM FUNCIONARIO WHERE MATRICULA = ?";
            PreparedStatement pstm = BancoDeDados.getConexao().prepareStatement(sql);
            pstm.setInt(1, matricula);
            pstm.executeUpdate();            
        } catch (SQLException ex) {
            Logger.getLogger(FuncionarioPesistencia.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public static void atualizarFuncionario(Funcionario funcionario){
        BancoDeDados.conecta();
        try {
            String slq = "UPDATE FUNCIONARIO SET nome = ?, matricula = ?, setor = ? where filial = ?";
            PreparedStatement pstm = BancoDeDados.getConexao().prepareStatement(slq);
            pstm.setString(1, funcionario.getNome());
            pstm.setInt(2, funcionario.getMatricula());
            pstm.setString(3, funcionario.getSetor());
            pstm.setString(4, funcionario.getFilial());
            pstm.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(FuncionarioPesistencia.class.getName()).log(Level.SEVERE, null, ex);
        }
        BancoDeDados.desconectar();
    }
    
    public static Funcionario lerFuncionario(Integer matricula){
        BancoDeDados.conecta();       
        Funcionario u = new Funcionario();
        try {
            String sql = "SELECT * FROM USUARIO WHERE MATRICULA = ?";
            PreparedStatement ps = BancoDeDados.getConexao().prepareStatement(sql);
            ps.setInt(1, matricula);
            ResultSet consulta = ps.executeQuery();
            while(consulta.next()){
                u.setNome(consulta.getString("nome"));
                u.setMatricula(consulta.getInt("matricula"));
                u.setSetor(consulta.getString("setor"));
                u.setFilial(consulta.getString("filial"));
            }
       } catch (SQLException ex1) {
            Logger.getLogger(FuncionarioPesistencia.class.getName()).log(Level.SEVERE, null, ex1);
        }
        return u;
    }
}

